const $ = layui.jquery;
const table=layui.table;
const laydate=layui.laydate;
const form=layui.form;
const layer=layui.layer;
$(()=> {
    if(error){
        layer.msg(error);
        return;
    }
    // 回显数据
    order.account=order.member.account;
    order.detail=order.receiverAddrDetail;
    form.val("edit-form",order);
    // 自定义验证规则
    form.verify({
        positiveInteger: [/^[1-9]\d*$/, '请输入正整数'],
    });
    // 点击修改按钮展开地址编辑
    $(".addr-change").click(function (){
        $(".addr-info").show();
    })
    // 获取省份数据
    getAddrProv();
    // 监听省份选择框的变化
    form.on('select(prov)', function(data) {
        // 如果省份选择框有值，则填充城市列表
        if (data.value) {
            // 清空城市选择框
            $(".city").find("option:not(:first)").remove();
            getAddrByParentId(data.value,".city","该省份无城市数据");
        }
    })
    // 监听城市选择框的变化
    form.on('select(city)', function(data) {
        // 如果城市选择框有值，则填充县区列表
        if (data.value) {
            // 清空城市选择框
            $(".dist").find("option:not(:first)").remove();
            getAddrByParentId(data.value,".dist","该城市无区县数据");
        }
    })
    // 监听区县选择框的变化
    form.on('select(dist)', function(data) {
        // 如果城市选择框有值，则填充县区列表
        if (data.value) {
            // 清空城市选择框
            $(".str").find("option:not(:first)").remove();
            getAddrByParentId(data.value,".str","该区县无街道数据");
        }
    })

})
// 点击提交按钮后的异步提交操作
function submitEdit(cb) {
    if(error){
        layer.msg(error);
        return;
    }
    let pass = form.validate("#edit-form")//参数验证
    if (!pass) {
        return;
    }
    // 验证通过，向后台发请求
    const url = ctx + "/sys/api/v1/order";
    let formData = form.val("edit-form");//参数为过滤器
    formData.id = order.id;
    // 格式转换
    formData.streetId=parseInt(formData.streetId);
    formData.totalPay=parseFloat(formData.totalPay).toFixed(2); // 转换为浮点数并保留两位小数
    $.ajax({
        url,
        method: "put",
        contentType: "application/json", // 设置 Content-Type 为 application/json
        data: JSON.stringify(formData), // 将 formData 转换为 JSON 字符串
        success(resp) {
            if (resp.success) {
                if (typeof cb === "function") {
                    cb(resp.success)
                }
            }
        }, error(resp) {
            let json = resp.responseJSON;
            let msg = json.msg || "修改订单异常";
            layer.msg(msg);
        }
    })

}

//获取省份数据
function  getAddrProv(){
    const url=ctx+"/front/api/v1/account/addr";
    $.ajax({
        url,
        method:"get",
        date:{
            parentId:null
        },
        success(resp) {
            // 填充省份
            resp.data.forEach(function(item) {  //item就是项
                var $option = $("<option>", {
                    value: item.id,
                    text: item.name
                });
                $(".prov").append($option);
            });
            // 重新渲染 <select>
            layui.form.render('select');

        }
    })
}
// 通用函数：根据 parentId 获取下级地址并填充到指定的 select 中,以及无下拉框时显示的文本
function getAddrByParentId(parentId, targetClass, placeholderText) {
    const url = ctx + "/front/api/v1/account/addr";
    $.ajax({
        url,
        method: "get",
        data: {
            parentId: parentId
        },
        success(resp) {
            // 清空目标 select 的选项（保留默认提示选项）
            $(targetClass).find("option:not(:first)").remove();

            if (resp.data && resp.data.length > 0) {
                // 填充选项
                resp.data.forEach(function(item) {
                    var $option = $("<option>", {
                        value: item.id,
                        text: item.name
                    });
                    $(targetClass).append($option);
                });
            } else {
                // 如果没有数据，显示提示选项
                $(targetClass).append($("<option>", {
                    disabled: true,
                    text: placeholderText || "该地区下无数据"
                }));
            }
            // 重新渲染 select
            layui.form.render('select');
        },
        error() {
            layer.msg("获取数据失败，请稍后再试");
        }
    });
}
